import logging
from extensions.ext_database import db
from models.robot.rob_timbre import RobTimbre
from services.errors.timbre import TimbreNotExistError

class TimbreService:
    @staticmethod
    def get_timbre_dict_by_id(timbre_id:str)->dict:
        if timbre_id:
            timbre = db.session.query(RobTimbre).filter(RobTimbre.id==timbre_id).first()
            if timbre:
                return timbre.to_dict()
            else:
                raise TimbreNotExistError(timbre_id=timbre_id)
        return {}
    
    @staticmethod
    def get_timbres(tenant_id)->list[RobTimbre]:
        try:
            return db.session.query(RobTimbre).filter(RobTimbre.tenant_id==tenant_id).order_by(RobTimbre.provider_id,RobTimbre.timbre_code).all()
        except Exception as e:
            logging.error(f"Failed to get timbres: {e}")
        return []